<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 块级作用域：if  for  switch while function 这些都是块
        // console.log(a)  // 报错 不能在初始化之前访问“a” Cannot access 'a' before initialization 
                        //left 定义的变量它的块级作用域中使用
        let a = 10
        console.log(a)

        if(true) {  // 作用域块
            var b = 200    
            let c =20 
        }
        console.log(b)  //200
        console.log(c)  // 报错，作用域块中 let 定义的变量只能在该作用域中使用
        
        //暂时性死区
        //程序在预解析时会查找作用域块中是否含有变量，有变量就会使用作用域块中的变量
        //当时程序运行时会发现这个变量需要执行的语句后面，所以 Cannot access 'a' before initialization 不能在初始化之前访问“a”
        // if( true) {
        //     console.log(a) //报错
        //     let a = 20
        // }
    </script>
</body>
</html>